///**
// * 版权声明： 版权所有 违者必究 2012
// * 日    期：12-6-2
// */
//package com.tongcao.cn.util;
//
//import com.dfire.rest.util.common.constant.LogConstants;
//import com.rop.Constants;
//import com.rop.RopException;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import java.io.IOException;
//import java.io.UnsupportedEncodingException;
//import java.security.GeneralSecurityException;
//import java.security.MessageDigest;
//import java.util.*;
//
///**
// * <pre>
// * 功能说明：
// * </pre>
// *
// * @author 毛豆
// * @version 1.0
// */
//public class RopUtils {
//
//    private static final Logger errorLogger = LoggerFactory.getLogger(LogConstants.ERROR_LOGGER);
//
//    /**
//     * 使用<code>secret</code>对paramValues按以下算法进行签名： <br/>
//     * uppercase(hex(sha1(secretkey1value1key2value2...secret))
//     *
//     * @param paramValues 参数列表
//     * @param secret
//     * @return
//     */
//    public static String sign(Map<String, Object> paramValues, String secret) {
//        return sign(paramValues,null,secret);
//    }
//
//    /**
//     * 对paramValues进行签名，其中ignoreParamNames这些参数不参与签名
//     * @param paramValues
//     * @param ignoreParamNames
//     * @param secret
//     * @return
//     */
//    public static String sign(Map<String, Object> paramValues, List<String> ignoreParamNames,String secret) {
//        try {
//            StringBuilder sb = new StringBuilder();
//            List<String> paramNames = new ArrayList<String>(paramValues.size());
//            paramNames.addAll(paramValues.keySet());
//            if(ignoreParamNames != null && ignoreParamNames.size() > 0){
//                for (String ignoreParamName : ignoreParamNames) {
//                    paramNames.remove(ignoreParamName);
//                }
//            }
//            Collections.sort(paramNames);
//
//            sb.append(secret);
//            for (String paramName : paramNames) {
//                sb.append(paramName).append(paramValues.get(paramName));
//            }
//            sb.append(secret);
//            byte[] sha1Digest = getSHA1Digest(sb.toString());
//            return byte2hex(sha1Digest);
//        } catch (IOException e) {
//            throw new RopException(e);
//        }
//    }
//
//    public static String utf8Encoding(String value, String sourceCharsetName) {
//        try {
//            return new String(value.getBytes(sourceCharsetName), Constants.UTF8);
//        } catch (UnsupportedEncodingException e) {
//            throw new IllegalArgumentException(e);
//        }
//    }
//
//    private static byte[] getSHA1Digest(String data) throws IOException {
//        byte[] bytes = null;
//        try {
//            MessageDigest md = MessageDigest.getInstance("SHA-1");
//            bytes = md.digest(data.getBytes(Constants.UTF8));
//        } catch (GeneralSecurityException gse) {
//            throw new IOException(gse.getMessage());
//        }
//        return bytes;
//    }
//
//    private static byte[] getMD5Digest(String data) throws IOException {
//        byte[] bytes = null;
//        try {
//            MessageDigest md = MessageDigest.getInstance("MD5");
//            bytes = md.digest(data.getBytes(Constants.UTF8));
//        } catch (GeneralSecurityException gse) {
//            throw new IOException(gse.getMessage());
//        }
//        return bytes;
//    }
//
//    /**
//     * 二进制转十六进制字符串
//     *
//     * @param bytes
//     * @return
//     */
//    private static String byte2hex(byte[] bytes) {
//        StringBuilder sign = new StringBuilder();
//        for (int i = 0; i < bytes.length; i++) {
//            String hex = Integer.toHexString(bytes[i] & 0xFF);
//            if (hex.length() == 1) {
//                sign.append("0");
//            }
//            sign.append(hex.toUpperCase());
//        }
//        return sign.toString();
//    }
//
//    public static String getUUID() {
//        UUID uuid = UUID.randomUUID();
//        return uuid.toString().toUpperCase();
//    }
//
//}
//
